#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
 
int main(){
    setvbuf(stdout,NULL,_IONBF,0);
    char s[255];
    int a[255];            //存放得到的整数
    int i,length;
    int f(char *s,int *a);
 
    printf("Input the string:");
    gets(s);
    length=f(s,a);
    printf("There are %d numbers.\n",length);
    printf("They are:");
    for(i=0;i<length;i++)
        printf("%d ",a[i]);
 
    return EXIT_SUCCESS;
}
 
int f(char *s,int *a){
    char *p;
    int t[255];                //存放一个整数的每位数
    int len=strlen(s);
    int flag=0;                //标记当前字符是否为0-9
    int i=0,j;
    int num=0;                //整数的个数
    for(p=s;p<=s+len;p++)     //把最后的\0字符也当作非数字字符处理
    {
        if(*p>='0'&&*p<='9')
        {
            flag=1;
            t[i++]=*p-'0';    //把字符'0'~'9'装换为数字0~9
        }
        else if(flag==1)     //如果当前字符非数字字符，且前一个字符为数字字符时，开始记录整数
        {
            a[num]=0;
            for(j=0;j<i;j++)
                a[num]=a[num]+t[j]*pow(10,i-1-j);
 
            num++;
            flag=0;
            i=0;
        }
    }
    return num;
}
/*#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    int s[300],t[300];
    char a[300];
    gets(a);
    int len=strlen(a),t1=0,k=0,flag=0;
    for(int i=0;i<len;i++)
    {
        if(a[i]>='0'&&a[i]<='9')
        {
            flag=1;
            s[k++]=a[i]-'0';
        }
        else if(flag==1)
        {
            t[t1]=0;
            for(int j=0;j<k;j++)
                t[t1]=t[t1]+s[j]*pow(10,k-1-j);
            t1++;flag=0;k=0;
        }
    }
    printf("%d\n",t1);
    for(int i=0;i<t1;i++)
    {
        if(i==0)
            printf("%d",t[i]);
        else
            printf(" %d",t[i]);
    }
}*/